/*第 i 个人的体重为 people[i]，每艘船可以承载的最大重量为 limit。
* 每艘船最多可同时载两人，但条件是这些人的重量之和最多为 limit。
* 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。
*
* 输入：people = [1,2], limit = 3
* 输出：1
* 解释：1 艘船载 (1, 2)
* */


package newcoder.TwoPointer_3;

import java.util.Arrays;

public class Leetcode881 {

    public static void main(String[] args) {

        Leetcode881 obj = new Leetcode881();
        int[] people = {3,5,3,4};
        int limit = 5;
        System.out.println(obj.numRescueBoats(people, limit));
    }

    public int numRescueBoats(int[] people, int limit){

        Arrays.sort(people);
        int len = people.length;
        int count = 0;
        int i = 0, j = len - 1;
        while (i <= j){

            if (people[i] + people[j] > limit){
                j--;
                count++;
            }else {
                i++;
                j--;
                count++;
            }
        }
        return count;
    }
}
